import type { Settings as LayoutSettings } from '@ant-design/pro-layout';
import { history } from 'umi';
import type { } from 'antd';
import type { SizeType } from 'antd/es/config-provider/SizeContext';

// 登录路由，这个比较特殊
export const loginPath = '/user/login';

/**
 * 子系统的定义
 */
export type SysName = 'audit' | 'main' | 'cloudConvert' | undefined;
/**
 * 全局状态 类型定义，放在这里是因为 它与 app.tsx有关，目前与app.tsx有关的都先放这里一部分，减少app.tsx中的代码量。在初始化时使用
 */
export type InitState =
  | {
    settings?: Partial<LayoutSettings> & {
      frameUrl?: string;
      componentSize?: SizeType;
      customerlevel_isABC?: boolean;
      loginHeader: any;
      riskLevelData: any[]
    } & any;
    curUser?: API.CurUser & { password?: string };
    curPassword?: string;
    sysName?: SysName;
    fetchUserInfo?: () => Promise<API.CurUser | undefined>;
  }
  | undefined;
/**
 * 一般是指路由变化时触发（可将登录，认证等逻辑放这）
 * @param init
 */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export async function onLayoutPC(init: InitState) {
  const { location } = history;
  // if (!init?.curUser) {
  //   const token = getToken();
  //   if (token) {
  //     const res = await getUserInfo(); // 获取当前用户信息
  //     if (res.ok) {
  //       setInit({
  //         ...init,
  //         curUser: res.data
  //       })
  //       if (location.pathname === loginPath) {
  //         history.push('/');
  //       }
  //     }
  //   } else if (location.pathname !== loginPath) {
  //     history.push(loginPath);
  //   }
  // }


  // 如果没有登录，重定向到 login
  if (!init?.curUser && location.pathname !== loginPath) {
    console.log("layout 踢回login")
    history.push(loginPath);
  }
}

/**
 * 扩展区域 目前只有开发模式下显示
 * @returns
 */
export function layoutLinks(): React.ReactNode[] {
  if (process.env.NODE_ENV === 'development') {
    return [<></>];
  }
  return [<></>];
}

/**
 * 根据路由获取系统名称
 * @param pathname
 * @returns
 */
export function getSysName(pathname: string): SysName {
  return pathname.startsWith('/audit/') ? 'audit' : 'main';
}

/**
 * 这里可以根据不同子系统初始化不同 layout
 * @param initialState
 * @returns
 */
export function getRunTimeLayoutConfig(initialState: InitState) {
  // let tempCollapsed: any = null;
  // const onCollapse = (collapsed: any) => {
  //   tempCollapsed = collapsed ? layoutLinksFalse() : layoutLinks();
  //   console.log(tempCollapsed);
  //   return tempCollapsed;
  // };
  return {
    // contentStyle: { background: '#eee' },
    disableContentMargin: true, // 内容展示区域的 Margin
    // logo 单击事件
    onMenuHeaderClick: () => {
      if (initialState?.sysName === 'audit') {
        history.push('/audit/home');
      } else {
        history.push('/home');
      }
    },
    // onCollapse,
    onPageChange: () => {
      onLayoutPC(initialState);
    },
    links: false,
    waterMarkProps: {
      content: initialState?.curUser?.usercode,
    },
    menuProps: {
      // items: parseMenu(),
      onClick: (menu: any) => {
        let menuLabel = '本地项目';
        console.log(menu, '@@@');
        if (menu.key === '/home') {
          menuLabel = "本地项目"
        } else {
          menuLabel = "在线项目"
        }
        window.main.behavior("305", { appName: menuLabel });
      }
    }
  };
}
